package com.zqx.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.zqx.constant.MessageConstant;
import com.zqx.dao.CheckitemDao;
import com.zqx.entity.PageResult;
import com.zqx.entity.QueryPageBean;
import com.zqx.pojo.CheckItem;
import com.zqx.service.CheckitemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Iterator;
import java.util.List;

/**
 * @Author:ZQX
 * @Date:2021/8/27 17:57
 * @Description:
 */
@Service
@Transactional
public class CheckitemServiceImpl implements CheckitemService {
    @Autowired
    private CheckitemDao cd;
    @Override
    public void add(CheckItem checkItem) {
        System.out.println("调用了CheckitemServiceImpl的add方法");
        cd.add(checkItem);
    }

    @Override
    public PageResult findPage(QueryPageBean queryPageBean) {
        System.out.println("调用了CheckitemServiceImpl的findPage的方法");
        //调用dao层的getTotal获取t_checkitem的总数
        //select * from t_checkitem where 动态sql语句
        String queryString = queryPageBean.getQueryString();  //查询条件
        int pageNumber = (queryPageBean.getCurrentPage() - 1) * queryPageBean.getPageSize();  //页码
        int pageSize = queryPageBean.getPageSize();  //当前页显示多少页
        long total = cd.getTotal(queryString);
        System.out.println("long的值为:"+total);
        //调用分页插件的方法设置页码和每页记录数
        //PageHelper.startPage((queryPageBean.getCurrentPage() - 1) * queryPageBean.getPageSize(), queryPageBean.getPageSize());
        //调用dao层的查询所有数据的方法findAll
        List<CheckItem> list  = cd.findAll(queryString,pageNumber,pageSize);
        //把数据添加给一个PageResult对象
        System.out.println("list的数据为:"+list);
       return  new PageResult(total,list);
    }

    @Override
    public PageResult findPage02(QueryPageBean queryPageBean) {
        System.out.println("调用了CheckitemServiceImpl的findPage02的方法");
        //调用dao层的getTotal获取t_checkitem的总数
        //select * from t_checkitem where 动态sql语句
        String queryString = queryPageBean.getQueryString();  //查询条件
        int pageNumber = queryPageBean.getCurrentPage();   //页码
        int pageSize = queryPageBean.getPageSize();  //当前页显示多少页
        PageHelper.startPage(pageNumber,pageSize);
       Page<CheckItem>  page =   cd.findPage(queryString);
        //调用分页插件的方法设置页码和每页记录数
        Iterator<CheckItem> iterator = page.getResult().iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        List<CheckItem> result = page.getResult();
        System.out.println(result);
        return new PageResult(page.getTotal(),page.getResult());
    }

    /**
     * 根据id删除检查项
     * @param checkitemId
     */
    @Override
    public void deleteById(Integer checkitemId) {
        System.out.println("调用了CheckitemServiceImpl的deleteById方法");
        //判断该检查项是否与检查组有关联关系
        long count = cd.getCountCheckGroupById(checkitemId);
        if(count==0){  //没有记录说明没有关联可以删除
            cd.deleteCheckItemById(checkitemId);
        }else{  //有记录说明有关联不能删除
            throw new RuntimeException(MessageConstant.DELETE_CHECKGROUP_NO );
        }
    }

    /**
     * 根据checkitemId查询t_checkitem的数据
     * @param checkitemId
     * @return
     */
    @Override
    public CheckItem findById(Integer checkitemId) {
        System.out.println("调用了CheckitemServiceImpl的findById方法");
        System.out.println("checkitemId"+checkitemId);
        return cd.findById(checkitemId);
    }

    /**
     * 修改t_checkitem的数据
     * @param checkItem
     */
    @Override
    public void update(CheckItem checkItem) {
        System.out.println("调用了CheckitemServiceImpl的update方法");
        cd.update(checkItem);
    }

    /**
     * 查询所有的检查项
     * @return
     */
    @Override
    public List<CheckItem> findAll() {
        return cd.findAllCheckItem();
    }

}
